﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace Cgd.Shell.Data
{
	/// <summary>
	/// 表示栏目。
	/// </summary>
	public class CgdColumn
	{
		/// <summary>
		/// 存放系统中支持的所有分类。
		/// </summary>
		private static CgdColumn[] _columns;

		/// <summary>
		/// 创建新的栏目。
		/// </summary>
		/// <param name="name">栏目名称。</param>
		/// <param name="title">栏目的标题。</param>
		/// <param name="value">栏目的数值，该值将被存放到数据库中。</param>
		private CgdColumn(string name, string title, int value)
		{
			this.Name = name;
			this.Title = title;
			this.Value = value;
		}

		/// <summary>
		/// 获取栏目名称（唯一标识的名称，通常与属性名相同）。
		/// </summary>
		public string Name { get; private set; }

		/// <summary>
		/// 获取栏目标题（友好名称）。
		/// </summary>
		public string Title { get; private set; }

		/// <summary>
		/// 获取栏目的整数值。
		/// </summary>
		public int Value { get; private set; }

		/// <summary>
		/// 静态构造器，初始化各个内置属性。
		/// </summary>
		static CgdColumn()
		{
			NewsHeadline = new CgdColumn("NewsHeadline", "业界新闻 - 头条", 11);
			NewsPop = new CgdColumn("NewsPop", "业界新闻 - 热点新闻", 12);
			NewsUpdates = new CgdColumn("NewsUpdates", "业界新闻 - 最近更新", 13);
			TechHeadline = new CgdColumn("TechHeadline", "技术文档 - 最新文档", 21);
			TechPop = new CgdColumn("TechPop", "技术文档 - 热门文档", 22);
			TechUpdates = new CgdColumn("TechUpdates", "技术文档 - 最近更新", 23);
			DesignHeadline = new CgdColumn("DesignHeadline", "策划文档 - 最新文档", 31);
			DesignPop = new CgdColumn("DesignPop", "策划文档 - 热门文档", 32);
			DesignUpdates = new CgdColumn("DesignUpdates", "策划文档 - 最近更新", 33);
			DownloadHeadline = new CgdColumn("DownloadHeadline", "下载资源 - 最新资源", 41);
			DownloadPop = new CgdColumn("DownloadPop", "下载文档 - 热门资源", 42);
			DownloadUpdates = new CgdColumn("DownloadUpdates", "下载文档 - 最近更新", 43);
			JobHeadline = new CgdColumn("JobHeadline", "招聘求职 - 最新工作", 51);
			JobPop = new CgdColumn("JobPop", "招聘求职 - 热门工作", 52);
			JobUpdates = new CgdColumn("JobUpdates", "招聘求职 - 最近更新", 53);

			_columns = new[] {
				NewsHeadline,
				NewsPop,
				NewsUpdates,
				TechHeadline,
				TechPop,
				TechUpdates,
				DesignHeadline,
				DesignPop,
				DesignUpdates,
				DownloadHeadline,
				DownloadPop,
				DownloadUpdates,
				JobHeadline,
				JobPop,
				JobUpdates,
			};
		}

		/// <summary>
		/// 获取系统支持的所有栏目。
		/// </summary>
		public static CgdColumn[] AllColumns { get { return _columns; } }

		/// <summary>
		/// 根据名字获取栏目。
		/// </summary>
		/// <param name="name">栏目名（唯一标识名字）。</param>
		/// <returns>具有指定名字的栏目，如果栏目不存在，返回null。</returns>
		public static CgdColumn GetByName(string name)
		{
			var q = from c in _columns
					where string.Compare(c.Name, name, true) == 0
					select c;

			if (q.Count() != 0)
				return q.First();
			else
				return null;
		}

		/// <summary>
		/// 根据数字值获取栏目。
		/// </summary>
		/// <param name="value">栏目的值。</param>
		/// <returns>具有指定值的栏目，如果栏目不存在，返回null。</returns>
		public static CgdColumn GetByValue(int value)
		{
			var q = from c in _columns
					where c.Value == value
					select c;

			if (q.Count() != 0)
				return q.First();
			else
				return null;
		}

		/// <summary>
		/// 获取“业界新闻 - 头条”栏目。
		/// </summary>
		public static CgdColumn NewsHeadline { get; private set; }

		/// <summary>
		/// 获取“业界新闻 - 热门”栏目。
		/// </summary>
		public static CgdColumn NewsPop { get; private set; }
	
		/// <summary>
		/// 获取“业界新闻 - 最新”栏目。
		/// </summary>
		public static CgdColumn NewsUpdates { get; private set; }
		
		/// <summary>
		/// 获取“技术文档 - 头条”栏目。
		/// </summary>
		public static CgdColumn TechHeadline { get; private set; }
		
		/// <summary>
		/// 获取“技术文档 - 热门”栏目。
		/// </summary>
		public static CgdColumn TechPop { get; private set; }
		
		/// <summary>
		/// 获取“技术文档 - 最新”栏目。
		/// </summary>
		public static CgdColumn TechUpdates { get; private set; }
		
		/// <summary>
		/// 获取“策划文档 - 头条”栏目。
		/// </summary>
		public static CgdColumn DesignHeadline { get; private set; }
		
		/// <summary>
		/// 获取“策划文档 - 热门”栏目。
		/// </summary>
		public static CgdColumn DesignPop { get; private set; }
		
		/// <summary>
		/// 获取“策划文档 - 最新”栏目。
		/// </summary>
		public static CgdColumn DesignUpdates { get; private set; }
		
		/// <summary>
		/// 获取“下载文档 - 头条”栏目。
		/// </summary>
		public static CgdColumn DownloadHeadline { get; private set; }
		
		/// <summary>
		/// 获取“下载文档 - 热门”栏目。
		/// </summary>
		public static CgdColumn DownloadPop { get; private set; }
		
		/// <summary>
		/// 获取“下载文档 - 最新”栏目。
		/// </summary>
		public static CgdColumn DownloadUpdates { get; private set; }
		
		/// <summary>
		/// 获取“招聘求职 - 头条”栏目。
		/// </summary>
		public static CgdColumn JobHeadline { get; private set; }
		
		/// <summary>
		/// 获取“招聘求职 - 热门”栏目。
		/// </summary>
		public static CgdColumn JobPop { get; private set; }
		
		/// <summary>
		/// 获取“招聘求职 - 最新”栏目。
		/// </summary>
		public static CgdColumn JobUpdates { get; private set; }
	}
}
